In digital communications networks, packet processing generally includes various algorithms that are applied to a packet of data or information. A packet typically includes a header, which typically specifies the packet's origin, destination, and length, and a payload that includes data and/or control information to be communicated using the packet. Error detection and correction information may be included in the trailer of a packet. The various packet processing algorithms generally analyze one or more components of a packet, i.e., the packet's header, payload, and trailer. Applications based on packet payload, often called data applications, include transcoding, voice recognition, security breach analysis, targeted advertising, copyright enforcement, etc. Some data applications may employ deep packet inspection. In intrusion detection, a statistical analysis may be performed on a stream of packets. Alternatively, or in addition, signature-based inspection of the packets may also be performed.
In general, one or more types of processing may be applied using one or more processing engines to the packets flowing through a network. The processing engines may be configured to process the packets sequentially, in parallel, or partially in parallel. Generally, the processing engines are logical entities that are implemented using one or more software components executing on one or more processors. For example, a single processor may implement all processing engines, each processing engine may be implemented using a processor dedicated thereto, or the various processing engines may be implemented by several processors, where the number of processors is less than the number of processing engines.
Once a certain set of processing engines is selected for processing the packets of a packet stream, the load of the one or more processors implementing those processing engines can vary from time to time in an unpredictable manner. The reasons for such load variation include a change in the number of packets and/or packet streams received, variations in the nature and/or size of the packets, a change in the availability of the processors, variations in individual processor loads, if those processors are configured to perform additional tasks. An increase in the overall load typically results in slowing down the processing of the packets. This can result in excessive communication delays. If the load of any of the processors becomes excessive, packets may be dropped and communication links can break down.